﻿/*
 * @author : Willian Silva
 * @create : 12/03/2011
 * @last modified : 12/03/2011
 * @version : 1.0 
 * @description : Classe Pessoa.VoluntarioForm, responsável por manter um Voluntario no sistema
 */

Ext.ns('App.Pessoa');

App.Pessoa.VoluntarioForm = Ext.extend(Ext.Window, {

	title : 'Manutenção de Voluntários'

	,constructor : function() {
		this.addEvents({
			salvar : true,
			excluir : true
		});

		App.Pessoa.VoluntarioForm.superclass.constructor.apply(this, arguments);
	}

	,initComponent : function() {

		this.abaDadosPrincipais = {
			title : 'Principal'
			,iconCls : 'aba_manterPessoa'
			,items : [{
					xtype : 'fieldset'
					,title : 'Dados Pessoais'
					,collapsible : true
					,defaultType : 'textfield'
					,defaults : {
						anchor : '100%'
					}
					,items : [{
								xtype : 'hidden'
								,name : 'codigo'
								,id: 'codigoVoluntario'
							}
							,{
								fieldLabel : 'Nome'
								,name : 'nome'
								,allowBlank : false
							}
							,{
								fieldLabel : 'Email'
								,name : 'email'
							}
							,{
								fieldLabel : 'Apelido',
								name : 'apelido'
							}
							,{
								xtype:'masktextfield'
								,fieldLabel:'RG'
								,name:'rg'
								,mask: '99.999.999-9'
								,money: false
								,useMask: true
								
							}
							,{
								xtype:'masktextfield'
								,fieldLabel:'CPF'
								,name:'cpf'
								,mask: '999.999.999-99'
								,money: false
								,useMask: true
							}
							,{
								xtype: 'maskdatefield'
								,fieldLabel:'Data Nascimento'
								,name:'dataNascimento'
							}
							,{
								xtype: 'combo'
								,fieldLabel: 'Sexo'
								,name: 'sexo'
								,store: [['M','Masculino'],['F','Feminino']]//sexo
								,displayField: 'sexo'
								,valueField: 'codigo'
								,hiddenName: 'sexo'
								,mode: 'local'
								,typeAhead: true
								,triggerAction: 'all'
								,allowBlank: false
							}
							,{
								xtype: 'combo'
								,fieldLabel: 'Situação'
								,name: 'situacao'
								,store: [['S','Ativo'],['N','Inativo']]//sexo
								,displayField: 'situacao'
								,valueField: 'codigo'
								,hiddenName: 'situacao'
								,mode: 'local'
								,typeAhead: true
								,triggerAction: 'all'
								,allowBlank: false
							}]
				}

			]

		}

		this.abaDadosVoluntario = {
			title : 'Dados Voluntário'
			,iconCls: 'aba_voluntario'
			,items : [{
						xtype : 'fieldset'
						,title : 'Dados Voluntário'
						,collapsible : true
						,defaultType : 'textfield'
						,defaults : {
							anchor : '100%'
						}
						,items : [{
									xtype : 'hidden'
									,name : 'Pessoa_codigo'
								}
								,{
									fieldLabel : 'Area Atuação'
									,name : 'areaAtuacao'
								}
								,{
									fieldLabel : 'Escolaridade'
									,name : 'escolaridade'
								}
								,{
									fieldLabel : 'Formação'
									,name : 'formacao'
								}
								,{
									xtype: 'combo'
									,fieldLabel: 'Periodicidade disponivel'
									,name: 'disPeriodicidade'
									,store: [['D','Diario'],['S','Semanal'],['Q','Quinzenal'],['M','Mensal']]
									,displayField: 'disPeriodicidade'
									,valueField: 'codigo'
									,hiddenName: 'disPeriodicidade'
									,mode: 'local'
									,typeAhead: true
									,triggerAction: 'all'
									,allowBlank: false
								}
								,{
									fieldLabel : 'Dias disponiveis'
									,name : 'disDias'
								}
								,{
									// xtype: 'textarea'
									fieldLabel : 'Proposta'
									,name : 'proposta'
								}
								,{
									xtype: 'combo'
									,fieldLabel: 'Aceito'
									,name: 'aceito'
									,store: [['S','Sim'],['N','Não']]
									,displayField: 'aceito'
									,valueField: 'codigo'
									,hiddenName: 'aceito'
									,mode: 'local'
									,typeAhead: true
									,triggerAction: 'all'
								}
							]
					}

			]

		}

		this.abaDadosContato = {
			title : 'Dados para contato',
			iconCls : 'aba_contato'

			,items : [{
						xtype : 'fieldset',
						title : 'Contato',
						collapsible : true,
						defaultType : 'textfield',
						defaults : {
							anchor : '100%'
						},
						items : [
							{
								xtype:'masktextfield'
								,fieldLabel:'Tel. Residencial'
								,name:'telefoneResidencial'
								,mask: '(99)9999-9999'
								,money: false
								,useMask: true
							}
							,{
								xtype:'masktextfield'
								,fieldLabel:'Tel. Comercial'
								,name:'telefoneComercial'
								,mask: '(99)9999-9999'
								,money: false
								,useMask: true
							}
							,{
								xtype:'masktextfield'
								,fieldLabel:'Celular'
								,name:'celular'
								,mask: '(99)9999-9999'
								,money: false
								,useMask: true
							}

						]
					}]

		}

		this.abaDadosEndereco = {
			title : 'Dados de Endereço',
			iconCls : 'aba_endereco',
			items : [{
						xtype : 'fieldset',
						title : 'Endereço',
						collapsible : true,
						defaultType : 'textfield',
						defaults : {
							anchor : '100%'
						},
						items : [{
									fieldLabel : 'Logradouro',
									name : 'endLogradouro'
								}, {
									fieldLabel : 'Número',
									name : 'endNumero'
								}, {
									xtype:'masktextfield'
									,fieldLabel:'CEP'
									,name:'endCep'
									,mask: '99999-999'
									,money: false
									,useMask: true
								}, {
									fieldLabel : 'Bairro',
									name : 'endBairro'
								}, {
									fieldLabel : 'Cidade',
									name : 'endCidade'
								}, {
									xtype: 'combo'
									,fieldLabel: 'Estado'
									,name: 'endEstado'
									,store: uf
									,displayField: 'endEstado'
									,valueField: 'codigo'
									,hiddenName: 'endEstado'
									,mode: 'local'
									,typeAhead: true
									,triggerAction: 'all'
								}, {
									fieldLabel : 'Complemento',
									name : 'endComplemento'
								}

						]
					}]
		}

		this.tabVoluntario = new Ext.TabPanel({
			renderTo : Ext.getBody(),
			activeItem : 0,
			border : false,
			deferredRender : false,
			plain : true,
			autoScroll : true,
			ref : 'tabFormContato'

			,defaults : {
				layout : 'form',
				labelWidth : 90,
				defaultType : 'textfield',
				autoHeight : true,
				bodyStyle : 'padding: 8px',
				defaults : {
					blankText : 'Este campo &eacute; obrigat&oacute;rio',
					anchor : '100%',
					maxLengthText : 'Campo com limite de at&eacute; <b>{0}</b> de caracteres!'
				}
			}

			,
			items : [this.abaDadosPrincipais, this.abaDadosVoluntario,this.abaDadosContato, this.abaDadosEndereco]
		});

		this.formVoluntario = new Ext.form.FormPanel({
					layout : 'form',
					border : false,
					items : this.tabVoluntario
				});

		Ext.apply(this, {
					width : 730,
					height : 450,
					modal : true,
					layout : 'fit',
					closeAction : 'hide',
					constrain : true,
					maximizable : true,
					items : this.formVoluntario,
					buttons : [
						{
								text : 'Salvar'
								,iconCls : 'bt_salvar'
								,scope : this
								, handler: function(){
									if(Ext.getCmp('codigoVoluntario').getValue() !=  ""){
										this.alteraRegistro();
									}else{
										this.insereRegistro();
						}
					
					}
					
					
				}
				,{
								text : 'Cancelar'
								,iconCls : 'bt_cancelar'
								,scope : this,
								handler : this.confimaCancelamento
							}]
				});

		App.Pessoa.VoluntarioForm.superclass.initComponent.call(this);
	}
	
	,setaDados: function(objetoVoluntario){
		this.formVoluntario.form.setValues(objetoVoluntario);
		
	}
	
	,resetForm: function(){
		this.formVoluntario.form.reset();
	}
	
	,show: function(){
		App.Pessoa.VoluntarioForm.superclass.show.apply(this,arguments);
		this.tabVoluntario.setActiveTab(0);
	}
	
	
	,insereRegistro: function(button){
		
		var form = this.formVoluntario.getForm();
		
		
		if(form.isValid())
		{
			this.params = this.formVoluntario.form.getValues(true);
			this.params += "&action=inserir";
			
			
			this.loaderTarget = button;
			Ext.ux.Loader.start({sender: button, waitingText: 'Salvando...'});

			Ext.Ajax.request({
				url: baseURL + '/service/index.php?controller=VoluntarioController&service=inserir',
				success:  function(result){
					var objRetorno = Ext.decode(result.responseText);
					
					if(objRetorno.success == true){
						Ext.ux.MessageBox.flash({
							msg: objRetorno.message,
							type: 'success'
						});
					   
						Ext.ux.Loader.stop(this.loaderTarget);
						this.hide();
						Ext.getCmp('pessoaVoluntario').carregaGrid();
						
					}else{
						Ext.ux.MessageBox.flash({
							msg: objRetorno.message,
							type: 'error'
						});
					}
					
				},

				
				
				params: this.params,
				scope: this			
			});                    
		}else{
			Ext.ux.MessageBox.flash({
				msg: 'Preencha todos os campos obrigatórios',
				type: 'warning',
				pause: 3
			});
		}
		
	}
	
	
	,alteraRegistro: function(button){
		
		//alert("to alterando");
		var form = this.formVoluntario.getForm();
		
		
		if(form.isValid())
		{
			this.params = this.formVoluntario.form.getValues(true);
			this.params += "&action=alterar";
			
			this.loaderTarget = button;
			Ext.ux.Loader.start({sender: button, waitingText: 'Salvando...'});

			Ext.Ajax.request({
				url: baseURL + '/service/index.php?controller=VoluntarioController&service=alterar',
				success:  function(result){
					var objRetorno = Ext.decode(result.responseText);
					
					if(objRetorno.success == true){
						Ext.ux.MessageBox.flash({
							msg: objRetorno.message,
							type: 'success'
						});
					   
						Ext.ux.Loader.stop(this.loaderTarget);
						this.hide();
						Ext.getCmp('pessoaVoluntario').carregaGrid();
						
					}else{
						Ext.ux.MessageBox.flash({
							msg: objRetorno.message,
							type: 'error'
						});
					}
					
				},

				
				params: this.params,
				scope: this			
			});                    
		}else{
			Ext.ux.MessageBox.flash({
				msg: 'Preencha todos os campos obrigatórios',
				type: 'warning',
				pause: 3
			});
		
		}
		
	}
	
	,confimaCancelamento: function(){
		Ext.MessageBox.confirm('Confirmação de cancelamento','Realmente deseja cancelar essa operação?', function(btn)
		{

			if(btn == 'yes')
			{
				this.hide();
			}
		}, this);

	}
	
	,throwValidationError : function(){
		Ext.ux.MessageBox.flash({
			msg: 'Os campos em destaque s&atilde;o obrigat&oacute;rios!',
			type: 'error',
			pause: 3
		});
	}
});

Ext.reg('pessoaVoluntarioForm',App.Pessoa.VoluntarioForm);